package br.com.financas.daos;

import br.com.financas.beans.Pessoa;
import br.com.financas.util.HibernateUtil;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;

/**
 *
 * @author Denis
 */
public class PessoaDao {
    Session sessao;
    Transaction trans;
    List<Pessoa>list;
    
    public void addPessoa(Pessoa p){
        try {
            sessao = HibernateUtil.getSessionFactory().openSession();
            trans=sessao.beginTransaction();
            
            Pessoa pessoa = new Pessoa();
            
            pessoa.setEmail(p.getEmail());
            pessoa.setSenha(p.getSenha());
            pessoa.setNome(p.getNome());
            pessoa.setSexo(p.getSexo());

            sessao.save(pessoa);
            trans.commit();
        } catch (Exception e){
            e.printStackTrace();
        }finally{
            sessao.close();
        }
    }
    public void atualizar(Pessoa pessoa,Pessoa p){
        try {
            sessao = HibernateUtil.getSessionFactory().openSession();
            trans=sessao.beginTransaction();
            pessoa.setIdPessoa(p.getIdPessoa());
            pessoa.setSenha(p.getSenha());
            sessao.update(pessoa);
            trans.commit();
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            sessao.close();
        }
    }
      public void atualizarSenha(Pessoa pessoa,Pessoa p){
        try {
            sessao = HibernateUtil.getSessionFactory().openSession();
            trans=sessao.beginTransaction();
            
            pessoa.setIdPessoa(p.getIdPessoa());
            pessoa.setEmail(p.getEmail());
            pessoa.setNome(p.getNome());
            pessoa.setSexo(p.getSexo());
            
            sessao.update(pessoa);
            trans.commit();
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            sessao.close();
        }
    }
    public Pessoa login(Pessoa pessoa){  
        sessao = HibernateUtil.getSessionFactory().openSession();
        trans=sessao.beginTransaction();
        Criteria cri = sessao.createCriteria(Pessoa.class);
        cri.add(Restrictions.eq("email",pessoa.getEmail()));
        cri.add(Restrictions.eq("senha",pessoa.getSenha()));
        pessoa = (Pessoa) cri.uniqueResult();
        sessao.close();
       return pessoa;
    }
    public Pessoa validaCadastro(Pessoa pessoa){  
        sessao = HibernateUtil.getSessionFactory().openSession();
        trans=sessao.beginTransaction();
        Criteria cri = sessao.createCriteria(Pessoa.class);
        cri.add(Restrictions.eq("email",pessoa.getEmail()));
        pessoa=(Pessoa) cri.uniqueResult();
        return pessoa;
    }
}